\tikzstyle{abstract}=[rectangle, draw=black, rounded corners, fill=blue!40, drop shadow,
        text centered, anchor=north, text=white, text width=3cm]
\tikzstyle{comment}=[rectangle, draw=black, rounded corners, fill=blue!30, drop shadow,
        text centered, anchor=north, text=white, text width=3cm]
\tikzstyle{myarrow}=[->, >=open triangle 90, thick]
\tikzstyle{line}=[-, thick]
        
\begin{tikzpicture}[node distance=1.5cm]
    \node (AuxNode00)  {};
    \node (Matrixexp) [abstract, rectangle split, rectangle split parts=2,right=of AuxNode00]
    { 
    	\textbf{MATRIXEXP}
	\nodepart{second}program
    };
    \node (Test) [abstract, rectangle split, rectangle split parts=2,left=of AuxNode00]
        {
            \textbf{TEST}
            \nodepart{second}program
        };

    \node (AuxNode01) [ below=of Test] {};
    \node (Aux) [abstract, rectangle split, rectangle split parts=2, left=of AuxNode01]
        {
            \textbf{AUXTEST}
            \nodepart{second}module
        };
     \node (AuxInstants)[comment, rectangle split, rectangle split parts=2, below=0.2cm of Aux, text justified]
	{
	 \textbf{Public}
	 \nodepart{second}
	 iotest \\
	 ffttest \\
	 pstat

	};
    \node (Methods) [abstract, rectangle split, rectangle split parts=2, right=of AuxNode01]
        {
            \textbf{METHODS}
            \nodepart{second}module
        };
            \node (MethodsInstants)[comment, rectangle split, rectangle split parts=2, below=0.2cm of Methods, text justified]
	{
	 \textbf{Public}
	 \nodepart{second}
	 taylorexp\\
	 eig\\
	 eigqr\\
	 taylorexpc \\
	 eigc \\
	 eigqrc 

	};
    \node (AuxNode02) [below=of MethodsInstants] {};

    \node (FFTW) [abstract, rectangle split, rectangle split parts=2, left=of AuxNode02]
        {
            \textbf{FFTW}
            \nodepart{second}module
        };
     \node (FFTWInstants)[comment, rectangle split, rectangle split parts=2, below=0.2cm of FFTW, text justified]
	{
	 \textbf{Public}
	 \nodepart{second}
	 fft \\
	 ifft \\
	};
            \node (AuxNode05) [below=of FFTWInstants] {};

            \node (IO) [abstract, rectangle split, rectangle split parts=2, right=of AuxNode05]
        {
            \textbf{IO}
            \nodepart{second}module
        };
            \node (IOInstants)[comment, rectangle split, rectangle split parts=2, below=0.2cm of IO, text justified]
	{
	 \textbf{Public}
	 \nodepart{second}
	 iscirculant \\
	 readmatrix \\
	 readmatrixc \\
	 printresult \\
	 printmatrix \\
	 displayhelp \\
	};
        
   
    
    
%    \draw[myarrow] (Aux.north) -- ++(0,0.8) -| (Test.south);
%    \draw[myarrow] (Methods.north) ++(-0.1,0) -- ++(0,0.8) -| (Test.south);
%    \draw[myarrow] (Methods.north) ++(0.1,0) -- ++(0,0.8) -| (Matrixexp.south);
%    \draw[myarrow] (FFTW.north) ++(-0.1,0) -- ++(0,0.8) -| (AuxInstants.south);
%    \draw[myarrow] (FFTW.north) ++(0.1,0) -- ++(0,0.8) -| (MethodsInstants.south);
%    \draw[myarrow] (IO.north) -- ++(0,0.8) -| (MethodsInstants.south);
%    \draw[myarrow] (IO.north) ++(-0.1,0) -- ++(0,0.8) -| (AuxInstants.south);
%    \draw[myarrow] (IO.north) ++(-0.2,0) -- ++(0,0.4) -- ++(-10,0) -- ++ (0,11.75) -| (Test.south);
%    \draw[myarrow] (IO.north) ++(0.1,0) -- ++(0,0.8) -| (Matrixexp.south);

    \draw[myarrow] (Aux.north) -- ++(0,0.8) -| (Test.south);
    \draw[myarrow] (Methods.north) -- ++(0,0.8) -| (Test.south);
    \draw[myarrow] (Methods.north) -- ++(0,0.8) -| (Matrixexp.south);
    \draw[myarrow] (FFTW.north) -- ++(0,0.8) -| (AuxInstants.south);
    \draw[myarrow] (FFTW.north) -- ++(0,0.8) -| (MethodsInstants.south);
    \draw[myarrow] (IO.north) -- ++(0,0.8) -| (MethodsInstants.south);
    \draw[myarrow] (IO.north) -- ++(0,0.8) -| (AuxInstants.south);
    \draw[myarrow] (IO.north) -- ++(0,0.8) -- ++(-10,0) -- ++ (0,10.342) -| (Test.south);
    \draw[myarrow] (IO.north) -- ++(0,0.8) -| (Matrixexp.south);
    \fill (IO.north)++(0,0.8) circle(2.5pt);
    \fill (IO.north) ++(-6.52,0.8) circle(2.5pt);
    \fill (Methods.north) ++ (0,0.8) circle(2.5pt);
    \fill (FFTW.north) ++ (0,0.8) circle(2.5pt);
\end{tikzpicture}
